package com.relife.common.utils;

import java.io.IOException;
import java.util.Properties;

import com.relife.common.file.FileUtil;
import com.relife.common.model.ClientManager;
import org.apache.log4j.Logger;
import org.springframework.core.io.support.PropertiesLoaderUtils;

import com.alibaba.fastjson.JSONArray;


public class SysConfig {
	private static final Logger log = Logger.getLogger("SysConfig");
	/** 用户登录Session **/
	public static final String USER_LOGIN_SESSION = "user_login";
	/** 验证码存放在Session中的key **/
	public static final String CAPTCHA_SESSION_KEY = "imageCaptchaKey";
	/** 报名用户登录Session **/
	public static final String PROMO_LOGIN_SESSION = "promo_login_session";
	/** CCB用户登录Session **/
	public static final String CCB_LOGIN_SESSION = "ccb_login_session";

	/** Member用户登录Session **/
	public static final String MEMBER_LOGIN_SESSION = " member_login_session";

	public static final String PWD_KEY = "CALL@+#=";
	/** 二维码加密key **/
	public static final String QRCODE_KEY = "QRCODE#%";
	/** 微信自动登录后要返回的页面 **/
	public static final String RET_URL = "ret_url";
	/** openId存放在Session中的key **/
	public static final String WECHAT_OPENID = "wechat_openid";
	/** 需要转化为PDF文件文件后缀名 **/
	public static final String[] TO_PDF_FILE = { "doc", "docx", "xls", "xlsx", "ppt", "pptx", "rtf", "txt" };
	public static final String INIT_PWD = "123456";

	/** 订单消息 **/
	public static final String ORDER_MESSAGE = "orderMessage";
	/** 新增订单 **/
	public static final String ADD_ORDER = "客户【{0}】提交了订单【{1}】，请尽快处理。";

	/** 处理消息 **/
	public static final String HANDLE_SMS = "您的%s，单号：%s进入%s环节。";
	/** 待办消息 **/
	public static final String TASK_SMS = "您有一条%s，单号：%s需要办理。";
	/** 驳回消息 **/
	public static final String BACK_SMS = "您的%s，单号：%s已被打回。";
	/** 审批完成消息 **/
	public static final String HANDLE_END_SMS = "您的%s，单号：%s已处理完成。";
	/** 终止消息 **/
	public static final String STOP_SMS = "您的%s，单号：%s已被终止。";
	/** 定时催单 **/
	public static final String SINGLE_REMINDER_SMS = "您的工单【{0}】已经超过{1}小时未处理,请尽快处理！";
	/** 房源绑定验证码 **/
	public static final String BINDING_HOUSE_SMS = "房源绑定验证码：%s";
	/** 生活缴费（水，电，煤气） **/
	public static final String LIVING_PAYMENT_SMS = "您好，%s的%s的水电费已抄录，供电局账单已到，请于收到此通知起7日之内完成核对缴费。逾期未交我公司将进行停止水电供给。谢谢合作。";
	/** 物业缴费（水，电，煤气） **/
	public static final String PROPERTY_PAYMENT_SMS = "房源绑定验证码：%s";
	/** 整改通知单短信 **/
	public static final String PATROL_ADVICE_NOTE_SMS = "PATROL_ADVICE_NOTE_SMS";
	/** 整改通知单微信 **/
	public static final String PATROL_ADVICE_NOTE_WX = "PATROL_ADVICE_NOTE_WX";

	/** 微信支付通知地址 **/
	public static final String WX_PAY_NOTIFY_URL = "WX_PAY_NOTIFY_URL";

	/** 酒店管理数据同步地址 **/
	public static final String SYNC_HOTEL_PRODUCT = "SYNC_HOTEL_PRODUCT";

	/** 报名成功微信通知 */
	public static final String APPLY_SUCCESS_NOTICE = "APPLY_SUCCESS_NOTICE";

	/** 报名成功短信通知 */
	public static final String APPLY_SUCCESS_NOTICE_SMS = "APPLY_SUCCESS_NOTICE_SMS";

	/** 关注微信公众号地址 */
	public static final String SUBSCRIBE_URL = "SUBSCRIBE_URL";

	/**
	 * 获取配置文件值
	 * 
	 * @author WU
	 * @date 2015年12月21日 下午8:02:27
	 * @param key
	 * @return
	 */
	public static String getProperty(String key) {
		try {
			Properties properties = PropertiesLoaderUtils.loadAllProperties("sysConfig.properties");
			return properties.getProperty(key);
		} catch (Exception e) {
			log.error("配置文件未配置该属性【" + key + "】");
			return null;
		}
	}

	/**
	 * 返回当前执行的方法路径
	 * 
	 * @author WU
	 * @date 2015年12月21日 下午8:01:21
	 * @return
	 */
	public static String getMethodUrl() {
		StringBuffer sb = new StringBuffer();
		StackTraceElement[] stacks = new Throwable().getStackTrace();
		sb.append(stacks[1].getClassName()).append("_").append(stacks[1].getMethodName());
		return sb.toString();
	}

	/**
	 * 读取SQL文件
	 * 
	 * @author WU
	 * @date 2015年12月25日 下午1:58:42
	 * @return
	 */
	public static StringBuffer getSql() {
		StringBuffer sb = new StringBuffer(FileUtil.getRealPath());
		StackTraceElement[] stacks = new Throwable().getStackTrace();
		sb.append(stacks[1].getClassName().replaceAll("\\.service\\.", "\\.sql\\.").replaceAll("\\.", "/"));
		sb.append("_").append(stacks[1].getMethodName()).append(".sql");
		if (sb.indexOf("$") > 0) {
			sb.replace(sb.indexOf("$"), sb.lastIndexOf("_"), "");
		}
		try {
			StringBuffer sql = FileUtil.readerFile(sb.toString(), "UTF-8");
			return sql;
		} catch (IOException e) {
			log.error(e.getMessage());
			return new StringBuffer();
		}
	}

	public static String getReportSql() {
		try {
			StackTraceElement[] stacks = new Throwable().getStackTrace();
			String key = stacks[1].getClassName().substring(stacks[1].getClassName().lastIndexOf(".") + 1, stacks[1].getClassName().length()) + "_" + stacks[1].getMethodName();
			return ClientManager.getInstance().getSql(key);
		} catch (Exception e) {
			log.error(e.getMessage());
			return "";
		}
	}

	public static void main(String[] args) {
		JSONArray array = new JSONArray();
		array.add("[工单流程");
		array.add("GD201703220009]");
		System.out.println(String.format(SysConfig.STOP_SMS, array.toArray()));
	}
}
